Nowadays, the Internet is widely used to transfer applications to users through browsers. The Internet also is used for e-commerce in which individual customers and businesses use the Web to purchase various goods and services. In fact, some companies offer goods and services solely on the Web while others use the Web to extend their reach.
With respect to these commercial activities and others, businesses and other content providers employ servers to process requests from different users. Various architectures are employed in handling these requests. Often, distributed architectures in which a set of servers in a cluster (“server farm”) are used to handle requests. In such a server farm architecture, the set of servers appears to a user as a single server. A load-balancing mechanism may be used to determine which server within the server farm will be used to handle various requests directed to the server farm.
Configuring and maintaining the various servers within a server farm has historically been a challenge. This challenge is exacerbated as the number of servers employed in a given server farm increases in number. In order to properly maintain servers within a server farm, the servers need to be updated from time to time. These updates include configuring data and services provided by the server to ensure settings and services in each of the servers are consistent with each other and to maintain near real-time knowledge of the various services and applications that exist on the servers of the server farm.
Unfortunately, current technologies that perform server management fail to provide a cohesive methodology for enabling systematic and comprehensive management of servers within a server farm. For example, a typical Internet system in an organization incorporates multiple Web servers to implement a highly reliable and scalable form. The Web servers in such a farm implementation need to be identically configured because they support the same set of logical content. However, over time, the server farm may need to be updated with solutions addressing specific customer requirements (“customer solutions”). For instance, new application components may be needed to be applied to the servers in the server farm. However, because an individual server has its own logic and physical characteristics, the administrators of these servers typically do not have the ability to perform one operation and have the operation be uniformly applied to the multiple servers in the server farm. As a result, an administrator of the server farm has to visit each server and deploy a customer solution individually on each server.
Such an individual deployment of customer solutions poses several problems. First of all, if multiple servers are used to support the same logic content, deploying customer solutions individually on each server may result in inconsistent deployment. Inconsistent deployment of solutions across the servers can cause undesirable operation of the same logic content. Second, an administrator may make mistakes during the deployment of multiple solutions individually to each server. As a result, the mistakes will manifest themselves in the servers as inconsistent and hard-to-diagnose problems. It is difficult for an administrator to ensure that multiple servers are consistent with each other with respect to their deployed solution state. Therefore, it is desirable to centrally store all configuration data, such as application settings and solutions, for each server in a server farm. It is also desirable that the centrally stored configuration data can be automatically deployed in a consistent manner to all servers in the server farm upon request.